package com.ipartek.formacion.dado.ddbb;

import com.ipartek.formacion.dado.interfaces.InterfaceAlumnoDAO;
import com.ipartek.formacion.dado.interfaces.InterfaceTiradaDAO;

/**
 * Clase abstracta
 * 
 * @author Fila3+1
 */
public abstract class DAOFactory {

	public static final int MYSQL = 1;
	public static final int SQLSERVER = 2;
	public static final int ORACLE = 3;
	public static final int ODBC = 4;
	public static final int TXTFILE = 5;
	public static final int MYSQL_PRUEBAS = 6;
	public static final int MYSQL_ERROR = 7;

	public abstract InterfaceAlumnoDAO getInterfaceAlumnoDAO();

	public abstract InterfaceTiradaDAO getInterfaceTiradaDAO();

	// Los metodos que vaya poniendo aqui tendre que implentarlos
	// en MySqlDAOFactory, OracleFactory, SqlServerFactory,..... (yo solo MySQL)

	// public abstract IRolDAO getIRolDAO();

	// public abstract IClienteDAO getIClienteDAO();

	/**
	 * Dependiendo de que valor le pases al constructor devolvera una instancia
	 * del tipo que sea. Solo esta implementada para MySQL
	 * 
	 * @param tipo
	 *            El tipo de base de datos al que se va a conectar
	 * @return Devuelve una instancia del tipo de base de datos que corresponda.
	 */
	public static DAOFactory getDAOFactory(int tipo) {

		switch (tipo) {
		case MYSQL:
			return new MySqlDAOFactory();
		case MYSQL_PRUEBAS:
			return new MySqlDAOFactoryPruebas();
		case MYSQL_ERROR:
			return new MySqlDAOFactoryError();
		}
		return null;
	}

}
